Computer systems are constantly improving in terms of speed, reliability, and processing capability. As a result, computers are able to handle more complex and sophisticated applications. As computers improve, performance demands placed on mass storage and input/output (I/O) devices increase. Thus, there is a continuing need to design mass storage systems that keep pace in terms of performance with evolving computer systems.
This invention particularly concerns the mass storage systems of the disk array type. Disk array data storage systems have multiple storage disk drive devices which are arranged and coordinated to form a single mass storage system. There are three primary design criteria for mass storage systems: cost, performance, and availability. It is most desirable to produce memory devices that have a low cost per megabyte, a high input/output performance, and high data availability. "Availability" is the ability to access data stored in the storage system and the ability to insure continued operation in the event of some failure. Typically, data availability is provided through the use of redundancy wherein data, or relationships among data, are stored in multiple locations. Two common methods of storing redundant data are the "mirror" and "parity" methods.
One problem encountered in the design of disk array data storage systems concerns the issue of retaining accurate mapping information of the data in store in the event of a system error or failure. This is true for systems that employ either one or both methods of storing redundant data. Thus, in the course of managing disk array mapping information, it is often necessary to insure that recently changed mapping information is stored on disk for error recovery purposes. This disk write requirement may occur for several reasons, such as (i) a time based frequency status update, (ii) a log page full status, or (iii) a specific host request. Generally, recent changes are accumulated at random locations in data structures that are optimized for performance of the disk array function and, in addition, are accumulated sequentially in a log which can be written to disk (posted) more quickly than the other data structures. This technique is common in the art of transaction processing. Disadvantageously, however, the posting requirement may occur concurrently with other ongoing disk read or write activity thereby creating I/O contention in the system. Such I/O contention often extracts a significant performance hit on the system, especially if the posting occurs frequently, because multiple I/O events must occur for a single posting of the log to disk. For example, typically, the log page is first marked as invalid (i.e., it feeds to be updated). Then, the log page is copied to disk and subsequently marked valid. Finally, in a redundant system, the redundant log page is copied to disk.
In view of the forgoing, and of the ever increasing computing speeds offered and massive amounts of information being managed, there is a constant need for improved performance in disk array systems and the like. Accordingly, an object of the present invention is to provide improved subsystem disk log performance.